dbccc97f6416980beca5335e9e546f57d3bfeeca,src/main/java/water/fvec/NewChunk.java,NewChunk,append2slowd,#,162

Before Change


      throw new ArrayIndexOutOfBoundsException(_len);
    assert _ls==null;
    boolean sparse = _id != null ||_ds == null;
    _ds = _ds==null ? MemoryManager.malloc8d(4) : MemoryManager.arrayCopyOf(_ds,_len<<1);
    if(sparse)
      _id = _id==null ? MemoryManager.malloc4(4) : MemoryManager.arrayCopyOf(_id,_len<<1);
  }

After Change


    if( _len > Vec.CHUNK_SZ )
      throw new ArrayIndexOutOfBoundsException(_len);
    assert _ls==null;
    if(_ds != null && _ds.length > 0){
      if(_id == null){ // check for sparseness
        int nzs = 0; // assume one non-zero for the element currently being stored
        for(double d:_ds)if(d != 0)++nzs;
        if((nzs+1)*MIN_SPARSE_RATIO < _len2)
          set_sparse(nzs);
      } else _id = MemoryManager.arrayCopyOf(_id, _len << 1);
      _ds = MemoryManager.arrayCopyOf(_ds,_len<<1);
    } else _ds = MemoryManager.malloc8d(4);
    assert _len == 0 || _ds.length > _len:"_ds.length = " + _ds.length + ", _len = " + _len;
  }